package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 提高每次读写的数据量，减少实际读写的次数，可以提高读写效率
 */
public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("image.jpeg");
        FileOutputStream fos = new FileOutputStream("image_cp2.jpeg");
        int len;
        byte[] data = new byte[1024*10];//10kb
        long start = System.currentTimeMillis();
        /*
            InputStream上定义的块读取方法:
            int read(byte[] data)
            一次性读取给定data数组总长度的字节量并存入数组中，返回值为实际读取到的字节量
            如果返回值为-1则表示流读取到了末尾

            OutputStream上定义了块写方法:
            void write(byte[] data)
            一次性将给定字节数组中的所有字节写出

            重载的write方法:
            void write(byte[] data,int offset,int len)
            将数组data从下标offset处开始的连续len个字节一次性写出
         */
        while((len = fis.read(data))!=-1){
//            fos.write(data);
            fos.write(data,0,len);
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕!耗时:"+(end-start)+"ms");
        fis.close();
        fos.close();
    }
}
